SQLiteはファイル1つで完結する軽量データベース、Dapperは極めて軽いマイクロORM。 この2つを組み合わせると、業務アプリや小規模ツールで高速・シンプルなデータアクセスを実現できます。
この記事でわかること
・SQLite × Dapper の基本構成
・INSERT / UPDATE / DELETE / SELECT の実装
・モデルクラスの作り方とマッピング
・トランザクションの書き方
・業務アプリ向けベストプラクティス
・SQLite × Dapper の基本構成
・INSERT / UPDATE / DELETE / SELECT の実装
・モデルクラスの作り方とマッピング
・トランザクションの書き方
・業務アプリ向けベストプラクティス
1. SQLite × Dapper の特徴
- 軽量・高速:EF Coreより圧倒的に軽い
- 学習コストが低い:SQLをそのまま書ける
- 小〜中規模アプリに最適:業務ツールと相性抜群
2. モデルクラスを定義する
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int? Age { get; set; }
}
3. 接続の基本(C#例)
using System.Data;
using Microsoft.Data.Sqlite;
using Dapper;
var connectionString = "Data Source=sample.db";
using IDbConnection connection = new SqliteConnection(connectionString);
connection.Open();
4. SELECT(一覧取得)
var users = connection.Query<User>(
"SELECT Id, Name, Age FROM Users"
).ToList();
foreach (var u in users)
{
Console.WriteLine($"{u.Id}, {u.Name}, {u.Age}");
}
ポイント
- 列名とプロパティ名が一致していれば自動マッピング
- SELECTは
Query<T>を使う
5. INSERT(追加)
var sql = "INSERT INTO Users (Name, Age) VALUES (@Name, @Age)";
connection.Execute(sql, new {
Name = "Taro",
Age = 25
});
6. UPDATE(更新)
var sql = "UPDATE Users SET Age = @Age WHERE Id = @Id";
connection.Execute(sql, new {
Age = 30,
Id = 1
});
7. DELETE(削除)
var sql = "DELETE FROM Users WHERE Id = @Id";
connection.Execute(sql, new {
Id = 1
});
8. WHERE付きSELECT(検索)
var users = connection.Query<User>(
"SELECT * FROM Users WHERE Age > @Age",
new { Age = 20 }
).ToList();
9. 1件取得(QueryFirst / Single)
var user = connection.QueryFirstOrDefault<User>(
"SELECT * FROM Users WHERE Id = @Id",
new { Id = 1 }
);
10. トランザクションを使う
using var tran = connection.BeginTransaction();
try
{
connection.Execute(
"INSERT INTO Users (Name, Age) VALUES (@Name, @Age)",
new { Name = "A", Age = 20 },
transaction: tran
);
connection.Execute(
"INSERT INTO Users (Name, Age) VALUES (@Name, @Age)",
new { Name = "B", Age = 30 },
transaction: tran
);
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
11. ベストプラクティス
- SQLは必ずパラメータ化して書く
- モデルのプロパティ名と列名を揃える
- 大量データは LIMIT / OFFSET を使う
- DBファイルは書き込み可能なフォルダに置く
- バックアップはファイルコピーでOK(SQLiteの強み)
まとめ:SQLite × Dapper は“軽量・実務向け”の最適解
- CRUDが数行で書ける
- 高速でメモリフットプリントも小さい
- SQLをそのまま書けるので既存知識が活きる
- 業務アプリ・ツール開発と相性抜群
小〜中規模のアプリで「速く・シンプルに・壊れにくく」作りたいなら、 SQLite × Dapper は非常にコスパの良い選択肢です。 この記事をベースに、自分のプロジェクトに組み込んでみてください。